﻿#define _CRT_SECURE_NO_WARNINGS
#pragma once

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int QDataType;
//定义队列结点结构
typedef struct QueueNode
{
	int data;
	struct QueueNode* next;
}QNode;

//定义队列结构
typedef struct Queue
{
	QNode* phead;//指向队头结点的指针
	QNode* ptail;//指向队尾结点的指针
	//int size;//队列中有效数据个数
}Queue;

//初始化队列
void QueueInit(Queue* pq);

//销毁队列
void QueueDestroy(Queue* pq);

// ⼊队列，队尾
void QueuePush(Queue* pq, QDataType x);

//队列判空
bool QueueEmpty(Queue* pq);

// 出队列，队头
void QueuePop(Queue* pq);

//取队头数据
QDataType QueueFront(Queue* pq);

//取队尾数据
QDataType QueueBack(Queue* pq);

//队列有效元素个数
int QueueSize(Queue* pq);